iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
1

Day 14 程序管理(1)

Linux 程序管理,就相當於 Windows的工作管理員一樣,在作業系統中,當執行程式或指令都可以產生程序,如 mkdirlstar 等指令或是在背景執行。而這些程序有短也有長時間的,但短時間的程序,其實很難去檢視。

檢視靜態程序狀態【ps】

ps 又稱為 (Proccess status)。

ps 常見參數
-a all 顯示一個終端所有的程序
-e 顯示所有程序
-f 全格式顯示所有進行中的程序
-l 長格式顯示更詳細的資訊
-u 顯示程序的歸屬使用者和記憶體佔用情況
-x 顯示沒有控制終端的程序

產生程序後,系統會自動賦予一個 PID,這個 PID 不會重複。

[root@localhost ~]# ps

  PID TTY          TIME CMD
 1557 pts/0    00:00:00 bash
 1581 pts/0    00:00:00 ps

PPIDPID ,前者為父程序,後者為子程序。

[root@localhost ~]# ps -f

UID        PID  PPID  C STIME TTY          TIME CMD
root      1557  1552  0 22:15 pts/0    00:00:00 -bash
root      1586  1557  0 22:36 pts/0    00:00:00 ps -f

只能看到當前 Shell 產生的程序。

[root@localhost ~]# ps -l

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  1557  1552  0  80   0 - 28888 do_wai pts/0    00:00:00 bash
0 R     0  1589  1557  0  80   0 - 38337 -      pts/0    00:00:00 ps
欄位名稱 說明
F 程序標誌,說明程序的許可權。 1、程序可以被複制,但是不能被執行。 4、程序使用超級使用者許可權。
S 程序狀態,與 STAT 狀態一樣。
UID 執行此程序的使用者的 ID。
PID 程序的 ID。
PPID 父程序的 ID。
C 該程序的 CPU 使用率,單位是百分比。
PRI 程序的優先順序。
NI Nice 值。
ADDR 該程序在記憶體的哪個位置。
SZ 該程序佔用多大記憶體。
WCHAN 該程序是否執行。"-"代表正在執行。
TTY 該程序是在哪個終端執行的,其中tty1 ~ tty7代表本地控制終端。tty1 ~ tty6為字元終端。tty7 為圖形終端。pts/0 ~ 255代表虛擬終端。
TIME 該程序佔用CPU的運算時間。
CMD 程序名。

檢視系統中所有的程序

[root@localhost ~]# ps aux

// 或者

[root@localhost ~]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
postfix   1371  0.0  0.2  89808  4056 ?        S    22:14   0:00 pickup -l -t unix -u
postfix   1372  0.0  0.2  89876  4072 ?        S    22:14   0:00 qmgr -l -t unix -u
root      1552  0.0  0.3 158920  5716 ?        Ds   22:15   0:00 sshd: root@pts/0
root      1556  0.0  0.1  72252  2856 ?        Ss   22:15   0:00 /usr/libexec/openssh/sftp-server
.........省略...........

每一欄代表的含義:

欄位名稱 說明
USER 產生該程序的使用者。
PID 程序的 ID。
%CPU 該程序佔用的CPU資源百分比。
%MEM 該程序佔用實體記憶體百分比。
VSZ 該程序佔用虛擬記憶體的大小,單位KB。
RSS 該程序佔用的實際實體記憶體大小,單位KB。
TTY 該程序是在哪個終端執行的,其中tty1 ~ tty7代表本地控制終端。tty1 ~ tty6為字元終端。tty7 為圖形終端。pts/0 ~ 255代表虛擬終端。
STAT 程序狀態。
START 該程序的啟動時間。
TIME 該程序佔用CPU的運算時間。
COMMAND 程序名。

STAT:程序狀態

代碼 說明
R 執行
S(大寫) 睡眠
T 停止狀態
s(小寫) 包含子程序
後台程序

※ 用一條槓分開附加指令

more 指令用來分頁較長的結果。

[root@localhost ~]# ps aux |more

grep 指令代表正規表示法。
以正規表示法,檢視包含 pickup 相關的程序名。

[root@localhost ~]# ps aux |grep pickup

postfix   1371  0.0  0.2  89808  4056 ?        S    22:14   0:00 pickup -l -t unix -u
root      1622  0.0  0.0 112824   972 pts/0    S+   23:38   0:00 grep --color=auto pickup

檢視活動中的程序【top】

使用 ps 指令雖然可以查詢特定的程序資訊,但無法觀看他的變化。但 top 可以達到持續的資訊。

[root@localhost ~]# top

※ 結束按 q 鍵。

列出的訊息

top - 23:49:29 up  1:35,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 116 total,   1 running, 115 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1881632 total,  1604976 free,   149128 used,   127528 buff/cache
KiB Swap:   839676 total,   839676 free,        0 used.  1589508 avail Mem

上一篇
Day 13 目錄與檔案權限
下一篇
Day 15 程序管理(2)
系列文
如何使用 Linux 從土裡到冒出頭來30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言